The invention relates to programming in a multiprocessor environment.
Various programming tools exist for parallelizing serial applications to run in a multiprocessor environment, including multi-core processors, or networks of interconnected computers. Computations performed in a first processor can interact with computations performed in a second processor by exchanging data according to communication protocols that control data transmission over physical communication channels interconnecting the processors. In some cases the communication protocols utilize features provided by the underlying hardware such as memory buffers or circuitry for implementing flow control techniques.